

class QTest {
    public static void main(String[] args) {
	if (args.length == 0) {
	    System.out.println("please type some test data on the command line");
	    System.exit(1);
	}

	System.out.println("testing constructor/isEmpty");
	Queue queue = new ListQueue();
	//	Queue queue = new ArrayQueue();
	check (queue.isEmpty());

	System.out.println("testing enqueue");
	for (int i = 0; i < args.length; i++)
	    queue.enqueue(args[i]);

	System.out.println("testing isEmpty");
	check (!queue.isEmpty());

	System.out.println("testing clear/isEmpty");
	queue.clear();
	check (queue.isEmpty());

	System.out.println("testing enqueue/first");
	for (int i = 0; i < args.length; i++) {
	    queue.enqueue(args[i]);
	    check ( queue.first().equals(args[0]) );
	}

	System.out.println("testing first/dequeue");
	for (int i = 0; i < args.length; i++) {
	    check ( queue.first().equals(args[i]) );
	    check ( queue.dequeue().equals(args[i]) );
	}

	System.out.println("testing isEmpty");
	check (queue.isEmpty());

	System.out.println("testing enqueue/first");
	for (int i = 0; i < args.length; i++) {
	    queue.enqueue(args[i]);
	    check ( queue.first().equals(args[0]) );
	}

	System.out.println("testing first/dequeue");
	for (int i = 0; i < args.length; i++) {
	    check ( queue.first().equals(args[i]) );
	    check ( queue.dequeue().equals(args[i]) );
	}

	System.out.println("testing isEmpty");
	check (queue.isEmpty());

	System.out.println( "Tests Succeeded!" );
    }
    static void check (boolean test) {
	if (!test) {
	    System.out.println("FAILED");
	    System.exit(1);
	}
    }
}

